package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.pojo.Student;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface StudentMapper {
    /**
     * 条件分页查询学生
     * @param name 学生姓名
     * @param degree 最高学历
     * @param clazzId 班级ID
     * @return 学生分页数据
     */
    Page<Student> queryStudents(@Param("name") String name,
                                @Param("degree") Integer degree,
                                @Param("clazzId") Integer clazzId);

    /**
     * 添加学生
     * @param student 学生对象
     */
    void insertStudent(Student student);

    /**
     * 根据ID查询学生
     * @param id 学生ID
     * @return 学生对象
     */
    Student getStudentById(Integer id);

    /**
     * 更新学生信息
     * @param student 学生对象
     */
    void updateStudent(Student student);

    /**
     * 批量删除学生
     * @param ids 学生ID列表
     */
    void deleteStudents(@Param("ids") List<Integer> ids);

    /**
     * 违纪处理更新
     * @param id 学生ID
     * @param score 扣分
     */
    void updateViolation(@Param("id") Integer id, @Param("score") Integer score);
    @MapKey("name")
    List<Map<String, Object>> countStudentDegreeData();

    /**
     * 统计每个班级的人数
     */
    List<Map<String, Object>> countStudentByClazz();
}

